struct actLL {
public:
    struct LL {
        int value;
        struct LL *next;
    };

    struct LL *actual;

public:
    actLL() {
        actual = NULL;
    }

    void add(int value) {
        struct LL *nStr = new LL;
        (*nStr).value = value;
        if(actual == NULL) {
            (*nStr).next = nStr;
        } else{
            nStr->next = actual->next;
            actual->next = nStr;
        }

        actual = nStr;
    }


    void outPut() {
        struct LL *actualStr = actual;
        std::cout << "break: " << &actual << std::endl;
        std::cout << "next->value: " << actual->value << "\tnext->next: " << actual->next << std::endl;
        actual = actual->next;

        while(actual != actualStr){
            std::cout << "next->value: " << actual->value << "\tnext->next: " << actual->next << std::endl;
            actual = actual->next;
        }
    }

    void outActual() {
        std::cout << "actual->value: " << actual->value << "\tactual->next: " << actual->next << std::endl;
    }

    void rmLink(int value) {
        struct LL *actualStr = actual;
        struct LL *tmp;
        actual = actual->next;
        while(true)
            if(actual->next->value == value) {
                tmp = actual->next->next;
                delete [] actual->next;
                actual->next = tmp;
                break;
            }
            else if(actual == actualStr) break;
            actual = actual->next;
    }
};
